home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-3139 / boot_pic.mug / pi1_prog.s < prev    next >
Text File  |  1987-04-21  |  3KB  |  111 lines

  1. ;
  2. ; Degas '.PI1' Picture & Program Loader v1.0 !!
  3. ; ---------------------------------------------
  4. ;
  5. ; Coded by: Mike Mee (but credit MUG U.K if ya use it Bruce !!)
  6. ;
  7. ; v1.0 - Adapted from Degas Picture Booter v1.0
  8. ;
  9.  
  10. ; DEGAS pictures:-       0 -     1 = resolution
  11. ;           2 -    33 = palette data
  12. ;          34 - 32033 = picture data
  13.  
  14. ; Use Degas pictures that are 32034 or 32066 in length, and alter the
  15. ; appropriate line for the pictures' length !!
  16.  
  17. ; Best used on a disk where all programs 'AUTO' load from the menu
  18. ; and not from desktop - as GEM will not be resident at all !!
  19.  
  20. ; No idea if this works on an 512K ST/512K or 1040K STE !!
  21. ; Although no illegal routines are employed - so it should work OK !!
  22.  
  23. pic_adr    equ    $20000
  24.  
  25. yes    equ    1
  26. no    equ    0
  27.  
  28. text_on    equ    no    ; no = saving of 12 bytes + length of text
  29.  
  30.     opt    p+,o+,d-,s-
  31.  
  32.     bra.s    start
  33.     dc.b    "Coded by: MUG U.K",191," - 16/10/1991",0
  34.  
  35. start    
  36.     ifne    text_on
  37.     pea    text(pc) 
  38.     move.w    #9,-(a7)
  39.     trap    #1
  40.     addq.w    #6,a7
  41.     endc
  42.  
  43.     lea    filename(pc),a0    ; file to load
  44.     move.l    #pic_adr-34,d6    ; destination address
  45.     move.l    #32066,d7     ; length = 32066
  46.  
  47. loadit    lea    handle(pc),a6    ; handle storage
  48.     clr.w    -(a7)         ; mode = 0 (open to read)
  49.     move.l    a0,-(a7)        ; filename to open
  50.     move.w    #$3d,-(a7)    ; f_open
  51.     trap    #1        ; do it !!
  52.     addq.l    #8,a7        ; tidy stack
  53.     move.w    d0,(a6)         ; store file handle returned
  54.  
  55.     move.l    d6,-(a7)        ; address to load to
  56.     move.l    d7,-(a7)        ; amount to read in
  57.     move.w    d0,-(a7)        ; file handle
  58.     move.w    #$3f,-(a7)    ; f_read
  59.     trap    #1        ; do it
  60.     adda.l    #$c,a7        ; tidy stack
  61.  
  62.     move.w    (a6),-(a7)    ; file handle
  63.     move.w    #$3e,-(a7)    ; f_close
  64.     trap    #1        ; do it !!
  65.     addq.l    #4,a7        ; tidy stack
  66.  
  67.     lea    pic_adr-32,a0    ; pictures palette
  68.     lea    $ffff8240.W,a1    ; ST palette
  69.     movem.l    (a0),d0-d7    ; move from one
  70.     movem.l    d0-d7,(a1)    ; to the other
  71.  
  72.     move.l    $44e.w,a0        ; current screen address
  73.     lea    pic_adr,A1    ; source
  74.     move.w    #$1F3F,D0        ; (32000/4)-1 = 7999 ($1f3f)
  75. bmove    move.l    (A1)+,(A0)+    ; move it
  76.     dbf    d0,bmove        ; loop
  77.  
  78.     pea    null(pc)        ; Command line
  79.     pea    null(pc)        ; Environment string
  80.     pea    progfile(pc)    ; Filename
  81.     clr.w    -(sp)        ; Load & execute
  82.     move.w    #$4b,-(sp)    ; p_exec
  83.     trap    #1        ; do it !!
  84.     lea    16(sp),sp        ; tidy stack
  85.  
  86. exit    rts            ; bye bye
  87.  
  88.  
  89. null    dc.l    0
  90. filename    dc.b    'a:\test.pi1',0
  91. progfile    dc.b    'a:\menu.prg',0
  92.  
  93.     ifne    text_on
  94. text    dc.b    $1B,'E'
  95.     dc.b    $1b,89,42,35    ; Text at 10 down & 3 in !!
  96.  
  97.     ;     0123456789012345678901234567890123456789 - 40 chars
  98.     dc.b    'Virus Free Disk From The Source !!',0
  99.     endc
  100.  
  101. handle    ds.w    1
  102. ;
  103. ; Alter length of 'blanks' to ensure length of bootsector is equal
  104. ; to 480 bytes !!
  105. ;
  106.     ifne    text_on
  107. blanks    ds.w    118    ; amount when text function is on
  108.     elseif
  109. blanks    ds.w    145    ; and when it's off
  110.     endc
  111.